import axios, {HttpStatusCode} from 'axios';
import {Token} from "../Auth/authenticate";
import QS from 'qs';
//antd的message提示组件，大家可根据自己的ui组件更改。
import { message } from 'antd'
//保存环境变量
const isPrd = process.env.NODE_ENV === 'production';
const isTest = process.env.NODE_ENV === 'test'

//区分开发环境还是生产环境基础URL
const BasicUrl = (isPrd ? 'http://127.0.0.1:3000/api/' : isTest ? 'http://127.0.0.1:3000/api/' : 'http://localhost:3000/api/');

//设置axios基础路径
const request = axios.create({
    baseURL: BasicUrl
})
// 请求拦截器
request.interceptors.request.use(config => {
    // 每次发送请求之前本地存储中是否存在token，也可以通过Redux这里只演示通过本地拿到token
    // 如果存在，则统一在http请求的header都加上token，这样后台根据token判断你的登录情况
    // 即使本地存在token，也有可能token是过期的，所以在响应拦截器中要对返回状态进行判断
    console.log('config', config);
    const token = Token();
    //在每次的请求中添加token
    config.headers.set('token', token);
    // config.data = Object.assign({}, config.data, {
    //     token: token,
    // })
    // //设置请求头
    // config.headers = {
    //     'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'
    // }
    // config.data = QS.stringify(config.data)
    return config
}, error => {
    return error;
})

// 响应拦截器
// request.interceptors.response.use(response => {
//     //根据返回不同的状态码做不同的事情
//     // 这里一定要和后台开发人员协商好统一的错误状态码
//     if (response.status == HttpStatusCode.Ok) {
//         return response.data;
//     }
//     message.error('请求失败:' + response.status);
//     //return response;
// })
//最后把封装好的axios导出
export default request;